﻿using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace SmartMedicalCare.API.Read.DTO.科室DTO
{
    /// <summary>
    /// 一级科室
    /// </summary>
    public class DepartmentDTO
    {
        /// <summary>
        /// 【主键·自增】唯一标识每个科室
        /// 业务：数据库中每个科室有唯一ID，方便后续关联二级分类、查询详情时精准定位。
        /// </summary>
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int DepartmentId { get; set; }

        /// <summary>
        /// 【外键】关联所属医院的ID
        /// 业务：标记该科室属于哪一家医院（如“智慧第一医院”的ID为1，则科室的HospitalId=1）。
        /// </summary>
        [Required]
        public int HospitalId { get; set; }
        /// <summary>
        /// 级别
        /// </summary>
        [Required]
        public int Css { get; set; }
        /// <summary>
        /// 【必填】科室名称
        /// 业务：科室的官方名称（如“内科”“外科”“儿科”），是用户识别科室的核心标识。
        /// </summary>
        [Required]
        [MaxLength(50)]
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// 【可选】科室简介
        /// 业务：科室的特色、擅长领域、医生团队等介绍（如“内科擅长心脑血管疾病诊疗，拥有3位主任医师”）。
        /// </summary>
        [MaxLength(500)]
        public string Intro { get; set; } = string.Empty;

        /// <summary>
        /// 状态（1=启用，0=禁用）
        /// 业务：手动控制科室信息的“开关”（如科室装修期间，临时下线其信息）。
        /// </summary>
        public int Status { get; set; } = 1;

        /// <summary>
        /// 创建时间
        /// 业务：记录科室信息的创建时间，用于管理审计（追溯“谁什么时候添加了这个科室”）。
        /// </summary>
        public DateTime CreateTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 逻辑删除标记：true=已删除，false=正常
        /// 业务：标记科室是否“逻辑删除”，物理数据仍保留在库中，便于追溯历史科室信息。
        /// </summary>
        public bool IsDeleted { get; set; } = false;
        /// <summary>
        /// 创建人
        /// </summary>
        public string CreateName { get; set; }

    }
}
